home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / dsp / fft / fteyaltr.z / fteyaltr / fftsubs.h86 < prev    next >
Text File  |  1991-08-31  |  4KB  |  196 lines

  1. extern short near x[], near qf[];
  2.  
  3. #define init\
  4.     _asm push si\
  5.     _asm push di\
  6.     _asm push bp
  7.  
  8. #define term\
  9.     _asm pop bp\
  10.     _asm pop di\
  11.     _asm pop si
  12.  
  13. #define _fft1(i) \
  14.     _asm sar x+2*i,1
  15.  
  16. #define _fft2(i0,i1) \
  17.     _asm mov ax,x+2*i0 \
  18.     _asm sar ax,1 \
  19.     _asm mov bx,x+2*i1 \
  20.     _asm sar bx,1 \
  21.     _asm mov cx,ax \
  22.     _asm add cx,bx \
  23.     _asm mov x+2*i0,cx \
  24.     _asm sub ax,bx \
  25.     _asm mov x+2*i1,ax
  26.  
  27. #define _fft3(i1,i3,i4) \
  28.     _asm mov ax,x+2*i4\
  29.     _asm sar ax,1\
  30.     _asm mov bx,x+2*i3\
  31.     _asm sar bx,1\
  32.     _asm mov cx,ax\
  33.     _asm sub cx,bx\
  34.     _asm sar cx,1\
  35.     _asm mov x+2*i4,cx\
  36.     _asm add ax,bx\
  37.     _asm sar ax,1\
  38.     _asm mov bx,x+2*i1\
  39.     _asm sar bx,1\
  40.     _asm mov cx,bx\
  41.     _asm sub cx,ax\
  42.     _asm mov x+2*i3,cx\
  43.     _asm add ax,bx\
  44.     _asm mov x+2*i1,ax
  45.  
  46. #define _fft4(i1,i2,i3,i4,cc1) \
  47.     _asm mov ax,x+2*i3\
  48.     _asm mov cx,cc1\
  49.     _asm imul cx\
  50.     _asm mov di,dx\
  51.     _asm mov si,dx\
  52.     _asm mov ax,x+2*i4\
  53.     _asm imul cx\
  54.     _asm add di,dx\
  55.     _asm sub si,dx\
  56.     _asm mov ax,x+2*i2\
  57.     _asm sar ax,1\
  58.     _asm mov bx,ax\
  59.     _asm sub bx,di\
  60.     _asm mov x+2*i4,bx\
  61.     _asm neg ax\
  62.     _asm sub ax,di\
  63.     _asm mov x+2*i3,ax\
  64.     _asm mov ax,x+2*i1\
  65.     _asm sar ax,1\
  66.     _asm sar ax,1\
  67.     _asm mov bx,ax\
  68.     _asm sub bx,si\
  69.     _asm mov x+2*i2,bx\
  70.     _asm add ax,si\
  71.     _asm mov x+2*i1,ax
  72.  
  73. #define _fft5a0(i3,i7,sm1,sp1,cc1,ind) \
  74.     _asm mov bp,x+2*i7\
  75.     _asm mov ax,sm1\
  76.     _asm imul bp\
  77.     _asm mov bx,dx\
  78.     _asm mov ax,x+2*i3\
  79.     _asm add bp,ax\
  80.     _asm mov dx,sp1\
  81.     _asm imul dx\
  82.     _asm mov cx,dx\
  83.     _asm mov ax,cc1\
  84.     _asm imul bp\
  85.     _asm add bx,dx\
  86.     _asm add cx,dx
  87.  
  88. #define _fft5a1(i3,i7,sm1,sp1,cc1,ind) \
  89.     _asm mov bp,x+2*i7\
  90.     _asm mov ax,sm1\
  91.     _asm imul bp\
  92.     _asm mov bx,dx\
  93.     _asm mov ax,x+2*i3\
  94.     _asm sar ax,ind\
  95.     _asm add bp,ax\
  96.     _asm mov dx,sp1\
  97.     _asm imul dx\
  98.     _asm mov cx,dx\
  99.     _asm mov ax,cc1\
  100.     _asm imul bp\
  101.     _asm add bx,dx\
  102.     _asm add cx,dx
  103.  
  104. #define _fft5b0(i4,i8,sm3,sp3,cc3,ind) \
  105.     _asm mov bp,x+2*i8\
  106.     _asm mov ax,sm3\
  107.     _asm imul bp\
  108.     _asm mov si,dx\
  109.     _asm mov ax,x+2*i4\
  110.     _asm add bp,ax\
  111.     _asm mov dx,sp3\
  112.     _asm imul dx\
  113.     _asm mov di,dx\
  114.     _asm mov ax,cc3\
  115.     _asm imul bp\
  116.     _asm add si,dx\
  117.     _asm add di,dx\
  118.  
  119. #define _fft5b1(i4,i8,sm3,sp3,cc3,ind) \
  120.     _asm mov bp,x+2*i8\
  121.     _asm mov ax,sm3\
  122.     _asm imul bp\
  123.     _asm mov si,dx\
  124.     _asm mov ax,x+2*i4\
  125.     _asm sar ax,ind\
  126.     _asm add bp,ax\
  127.     _asm mov dx,sp3\
  128.     _asm imul dx\
  129.     _asm mov di,dx\
  130.     _asm mov ax,cc3\
  131.     _asm imul bp\
  132.     _asm add si,dx\
  133.     _asm add di,dx\
  134.  
  135. #define _fft5c(i1,i2,i3,i4,i5,i6,i7,i8) \
  136.     _asm mov ax,si\
  137.     _asm sub ax,bx\
  138.     _asm mov dx,x+2*i2\
  139.     _asm sar dx,1\
  140.     _asm mov bp,ax\
  141.     _asm sub bp,dx\
  142.     _asm mov x+2*i7,bp\
  143.     _asm add ax,dx\
  144.     _asm mov x+2*i4,ax\
  145.     _asm mov ax,cx\
  146.     _asm add ax,di\
  147.     _asm mov dx,x+2*i6\
  148.     _asm sar dx,1\
  149.     _asm mov bp,ax\
  150.     _asm sub bp,dx\
  151.     _asm mov x+2*i3,bp\
  152.     _asm add ax,dx\
  153.     _asm mov x+2*i8,ax\
  154.     _asm add bx,si\
  155.     _asm mov dx,x+2*i1\
  156.     _asm sar dx,1\
  157.     _asm mov bp,dx\
  158.     _asm sub bp,bx\
  159.     _asm mov x+2*i6,bp\
  160.     _asm add bx,dx\
  161.     _asm mov x+2*i1,bx\
  162.     _asm sub cx,di\
  163.     _asm mov dx,x+2*i5\
  164.     _asm sar dx,1\
  165.     _asm mov bp,dx\
  166.     _asm sub bp,cx\
  167.     _asm mov x+2*i5,bp\
  168.     _asm add cx,dx\
  169.     _asm mov x+2*i2,cx
  170.  
  171. #define _fft50(i1,i2,i3,i4,i5,i6,i7,i8,sm1,sp1,cc1,sm3,sp3,cc3,ind) \
  172.     _fft5a0(i3,i7,sm1,sp1,cc1,ind) \
  173.     _fft5b0(i4,i8,sm3,sp3,cc3,ind) \
  174.     _fft5c(i1,i2,i3,i4,i5,i6,i7,i8)
  175.  
  176. #define _fft51(i1,i2,i3,i4,i5,i6,i7,i8,sm1,sp1,cc1,sm3,sp3,cc3,ind) \
  177.     _fft5a1(i3,i7,sm1,sp1,cc1,ind) \
  178.     _fft5b1(i4,i8,sm3,sp3,cc3,ind) \
  179.     _fft5c(i1,i2,i3,i4,i5,i6,i7,i8)
  180.  
  181. #define _fft7(i1,i2) \
  182.     _asm mov ax,x+2*i2\
  183.     _asm imul ax\
  184.     _asm mov qf+2*i1,dx\
  185.  
  186. #define _fft8(i1,i2,i3) \
  187.     _asm mov ax,x+2*i2\
  188.     _asm imul ax\
  189.     _asm mov bx,ax\
  190.     _asm mov cx,dx\
  191.     _asm mov ax,x+2*i3\
  192.     _asm imul ax\
  193.     _asm add ax,bx\
  194.     _asm adc dx,cx\
  195.     _asm mov qf+2*i1,dx
  196.